package org.jypj.dev.dao;

import org.jypj.dev.model.Road;
import org.jypj.dev.util.Page;

import java.util.List;
import java.util.Map;

public interface IRoadDao {
    
 	/**
	 * 保存    
	 * 字段为空的不存防止覆盖存在默认值的字段
	 * @param road
	 * @return 保存后的对象包括ID
	 */	
	public int saveRoadByField(Road road);
	
	/**
	 * 保存    
	 * 所有字段全都保存
	 * @param road 
	 * @return 保存后的对象包括ID
	 */	
	public int saveRoad(Road road);
    
    /**
	 * 根据ID删除
	 * @param id 主键ID
	 * @return 删除记录数
	 */	
    public int deleteRoadById(String id);
    
   	/**
	 * 根据对象删除
	 * @param road
	 * @return 
	 */	
    public int deleteRoadByObject(Road road);
    /**
	 * 更新  
	 * 只更新值不为空的字段
	 * @param road 
	 * @return 保存后的对象包括ID
	 */	
    public int updateRoadByField(Road road);
    
    /**
	 * 更新  
	 * 更新所有字段
	 * @param road 
	 * @return 保存后的对象包括ID
	 */	
    public int updateRoad(Road road);
    
   /**
	 * 按ID查询
	 * @parm id 主键ID
	 * @return Road 
	 */	
    public Road selectRoadById(String id);
    
    /**
	 * 分页查询 包含条件
	 * @param page 分页对象
	 * @param map  查询条件  
	 * @return  List<Road>
	 */	
     public List<Road> selectOnePageByMap(Page page,Map<String,Object> map);
    /**
	 * 分页查询 包含对象条件
	 * @param page 分页对象
	 * @param road 查询对象
	 * @return List<Road>
	 */	
     public List<Road> selectOnePageByRoad(Page page,Road road);
     /**
 	 * 按条件查询全部的
 	 * @param map  查询条件  
 	 * @return  List<Road>
 	 */	
      public List<Road> selectAllTreeData(Map<String,Object> map);
    
	   /**
		 * 按条件查询全部的
		 * @param map  查询条件  
		 * @return  List<Road>
		 */	
      public List<Road> selectAllByMap(Map<String,Object> map);
     
      
   /**
	 * 按条件查询全部的
	 * @param map  查询条件  
	 * @return  List<Road>
	 */	
     public List<Road> selectAllByRoad(Road road);
    
	/**
	 * 按条件查询单个对象
	 * @param map  查询条件  
	 * @return  Road
	 */	
     public Road selectObjectByMap(Map<String,Object> map);
     
     /**
	 * 按条件查询单个对象
	 * @param map  查询条件  
	 * @return  Road
	 */	
     public Road selectObjectByRoad(Road road);
     
     /**
      * 查询交路的数量
      * @return
      */
     public int selectRoadNum();
}
